import router from "@/router";
import store from "@/store";
import ACCESS_ENUM from "@/access/accessEnum";
import checkAccess from "@/access/checkAccess";

router.beforeEach(async (to, from, next) => {
  // console.log("之前的登陆用户信息====", store.state.user.loginUser);
  let loginUser = store.state.user.loginUser;
  // console.log(loginUser.userRole === ACCESS_ENUM.NOT_LOGIN);
  // // 如果之前没登陆过，自动登录
  if (loginUser.userRole === ACCESS_ENUM.NOT_LOGIN) {
    // 加 await 是为了等用户登录成功之后，再执行后续的代码
    // console.log("之前没登陆过，自动获取登录信息");
    //调用 Vuex 中 user 模块下的 getLoginUser Action
    await store.dispatch("user/getLoginUser");
    loginUser = store.state.user.loginUser;
  } else {
    console.log("用户已登录");
  }
  //跳转页面是，先查看该用户是否有权限访问该页面
  // console.log("权限校验");
  //该页面需要的权限
  const needAccess = (to.meta?.access as string) ?? ACCESS_ENUM.NOT_LOGIN;
  // 要跳转的页面必须要登陆
  if (needAccess !== ACCESS_ENUM.NOT_LOGIN) {
    // 如果没登陆，跳转到登录页面
    if (
      !loginUser ||
      !loginUser.userRole ||
      loginUser.userRole === ACCESS_ENUM.NOT_LOGIN
    ) {
      next(`/user/login?redirect=${to.fullPath}`);
      return;
    }
    // 如果已经登陆了，但是权限不足，那么跳转到无权限页面
    if (!checkAccess(loginUser, needAccess)) {
      // next("/noAuth");
      console.log("权限不足");
      return;
    }
  }
  next();
});
